<?php
function paging($currentPage, $maxPage, $path = '',$modpage) {

    $nav = array(

        // bao nhiêu trang bên trái currentPage

        'left'    =>    3,

        // bao nhiêu trang bên phải currentPage

        'right'    =>    3

    );



    // nếu maxPage < currentPage thì cho currentPage = maxPage

    if ($maxPage < $currentPage) {

        $currentPage = $maxPage;

    }



    // số trang hiển thị

    $max = $nav['left'] + $nav['right'];



    // phân tích cách hiển thị

    if ($max >= $maxPage) {

        $start = 1;

        $end = $maxPage;

    }

    elseif ($currentPage - $nav['left'] <= 0) {

        $start = 1;

        $end = $max + 1;

    }

    elseif (($right = $maxPage - ($currentPage + $nav['right'])) <= 0) {

        $start = $maxPage - $max;

        $end = $maxPage;

    }

    else {

        $start = $currentPage - $nav['left'];

        if ($start == 2) {

            $start = 1;

        }



        $end = $start + $max;

        if ($end == $maxPage - 1) {

            ++$end;

        }

    }



    $navig = '<div class="navigation">';

    if ($currentPage >= 2) {

        if ($currentPage >= $nav['left']) {

            if ($currentPage - $nav['left'] > 2 && $max < $maxPage) {

                // thêm nút "First"

                $navig .= '<span class="page_item"><a href="'.$path.$modpage.'1'.'">1</a></span>';

                $navig .= '<span class="current_page_item"><b>...</b></span>';

            }

        }

        // thêm nút "«"

        $navig .= '<span class="page_item"><a href="'.$path.$modpage.($currentPage - 1).'">«</a></span>';

    }



    for ($i=$start;$i<=$end;$i++) {

        // trang hiện tại

        if ($i == $currentPage) {

            $navig .= '<span class="current_page_item">'.$i.'</span>';

        }

        // trang khác

        else {

            $pg_link = $path.$modpage.$i;

            $navig .= '<span class="page_item"><a href="'.$pg_link.'">'.$i.'</a></span>';

        }

    }



    if ($currentPage <= $maxPage - 1) {

        // thêm nút "»"

        $navig .= '<span class="page_item"><a href="'.$path.$modpage.($currentPage + 1).'">»</a></span>';



        if ($currentPage + $nav['right'] < $maxPage - 1 && $max + 1 < $maxPage) {

            // thêm nút "Last"

            $navig .= '<span class="current_page_item">...</span>';

            $navig .= '<span class="page_item"><a href="'.$path.$modpage.$maxPage.'">'.$maxPage.'</a></span>';

        }

    }

    $navig .= '</div>';



    // hiển thị kết quả

   return $navig;

}
?>